// pages/login/index.ts
import { authApi, setToken } from '../../utils/api';

// 存储用户信息
const setUserInfo = (userInfo: any) => {
  wx.setStorageSync('userInfo', userInfo);
};

// 获取用户信息
const getUserInfo = () => {
  return wx.getStorageSync('userInfo');
};

// 移除用户信息
const removeUserInfo = () => {
  wx.removeStorageSync('userInfo');
};

Page({
  data: {
    loading: false,
  },

  onLoad() {
    // 检查是否已登录
    this.checkLoginStatus();
  },

  checkLoginStatus() {
    const token = wx.getStorageSync('token');
    if (token) {
      // 已登录，跳转到首页
      wx.switchTab({
        url: '/pages/index/index',
      });
    }
  },

  async onLogin() {
    if (this.data.loading) return;

    this.setData({ loading: true });

    try {
      // 显示加载中
      wx.showLoading({
        title: '登录中...',
        mask: true,
      });

      // 获取微信登录code
      const loginRes: any = await new Promise((resolve, reject) => {
        wx.login({
          success: resolve,
          fail: (err) => reject(new Error(`微信登录失败: ${err.errMsg}`)),
        });
      });

      const { code } = loginRes;

      if (!code) {
        throw new Error('获取登录code失败');
      }

      // 调用后端登录API
      const res: any = await authApi.login(code);

      if (res.access && res.refresh && res.user_id && res.username) {
        // 保存token和refresh token
        setToken(res.access, res.refresh);
        
        // 保存用户信息
        const userInfo = {
          id: res.user_id,
          username: res.username,
          // 可以根据后端返回添加更多用户信息
        };
        setUserInfo(userInfo);

        wx.hideLoading();
        wx.showToast({
          title: '登录成功',
          icon: 'success',
          duration: 1500,
        });

        // 跳转到首页
        setTimeout(() => {
          wx.switchTab({
            url: '/pages/index/index',
          });
        }, 1500);

      } else {
        throw new Error('登录失败：返回数据不完整');
      }

    } catch (error: any) {
      console.error('登录失败:', error);
      wx.hideLoading();
      
      // 更详细的错误提示
      let errorMessage = '登录失败';
      if (error.message.includes('网络连接失败')) {
        errorMessage = '网络连接失败，请检查网络';
      } else if (error.message.includes('微信登录失败')) {
        errorMessage = '微信登录失败，请重试';
      } else if (error.message) {
        errorMessage = error.message;
      }
      
      wx.showToast({
        title: errorMessage,
        icon: 'none',
        duration: 3000,
      });
    } finally {
      this.setData({ loading: false });
    }
  },

  onShow() {
    // 每次显示页面时检查登录状态
    this.checkLoginStatus();
  },
});
